home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.misc
- subject: v10i020: PCcurses v.1.4 part 6 of 7
- from: bl@infovox.se (Bj|rn Larsson)
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 10, Issue 20
- Submitted-by: bl@infovox.se (Bj|rn Larsson)
- Archive-name: pccurses14/part06
-
- # ----------------------------- cut here -----------------------------
- #! /bin/sh
- # This is a shell archive. Remove anything before the `cut' line,
- # then unpack by saving it into a file and typing `sh file'. The
- # archive ends by exit(0), so don't worry about trailing junk.
- #
- # (This is archive 6 in a series of 7).
- #
- # Contents:
- #
- # curses.3
- # readme.now
- #
- # Wrapped by USER@MS-DOS --- Sun Jan 14 14:02:52 1990
- #
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f curses.3 -a "${1}" != "-c" ; then
- echo Will not over-write existing file \"curses.3\"
- else
- echo Extracting - \"curses.3\"
- sed "s/^X//" >curses.3 <<'END_OF_curses.3'
- XCURSES(3) MS-DOS Programmer's Manual CURSES(3)
- X
- XNAME
- X curses - screen/window management library
- X
- XDESCRIPTION
- X Curses is a library of screen and window management routines. It is modeled
- X after the UNIX curses and ncurses libraries. Normally, programs written for
- X PCcurses should be easily ported to UNIX, and vice versa.
- X
- X To use the routines, the function initscr() must first be called. This cre-
- X ates two 'windows' for the user: stdscr and curscr. Stdscr is the default
- X window for the user to make changes on, and curscr reflects the current
- X contents of the physical display screen. The user writes or edits the std-
- X scr window to his liking, then calls the refresh() function to make curscr
- X and the physical screen look like stdscr. When the user program terminates,
- X it should call the endwin() function to restore things to normal.
- X
- X There are all sorts of window manipulation routines available to the pro-
- X grammer: auxiliary windows may be created, edited, moved and deleted. The
- X terminal may be set in many different modes, output text may be attributed
- X with blink, blank, bold and reverse attributes. There are window-specific
- X printf- and scanf-like routines, routines for scrolling, box-drawing, win-
- X dow overlaying, clearing routines etc. Curses also handles terminal func-
- X tion keys, which is enables by calling the keypad() function.
- X
- X The handling of character attributes is different on MGA, CGA and Hercules
- X adapters. The package has been tested with them all. EGA has not been tes-
- X ted, but should also work except for special screen modes.
- X
- X For more and detailed information, see the library source codes. All curses
- X functions are preceded by a brief but complete description.
- X
- XCOMPILING
- X All programs that use curses facilities should include the file <curses.h>,
- X and during linking, the library ?curses.lib should be specified to the lin-
- X ker ('?' is 's', 'c' 'm' or 'l' for small, compact, medium or large memory
- X model respectively).
- X
- XFUNCTIONS
- X Below is a list over the available functions, together with a brief de-
- X scription of what they do. In general, functions whose names start with
- X 'w' differ from the one without 'w' (like wmove vs. move) signify that
- X a specific window is used. Without a 'w', sdtscr is implied. The functions
- X that start with 'mv' before the 'genereic' function name signify that a
- X cursor motion should be made before the actual work. 'mv' and 'w' combine
- X as expected.
- X
- X Most routines that return an int will return the manifest constant ERR if
- X there is a failure during execution. Routines that return a char actually
- X return an int, so that ERR does not conflict with the character code 0xff.
- X All IBM PC characters from 0 to 0xff are allowed for usage with curses.
- X There are (non-portable) character output routines to write the special
- X IBM fonts for characters with ASCII code less than 0x20 (control charac-
- X ters).
- X
- X Some routines, like {mv}{w} printw() and {mv}{w}scanw() return a meaningful
- X positive value if the operation is successful.
- X
- X The curses package uses some predefined types, variables and manifest con-
- X stants that are also available to the programmer. For example, the ERR and
- X OK macros should be used to test for failure of curses functions. Don't use
- X the numerical values, since those are different for different versions of
- X curses!
- X
- X There are also a few globally accessible variables that should not be tou-
- X ched by the application program. Those untouchable variables have names
- X starting with an underscore (_) to avoid conflicts. The user-accessible
- X types, variables and constants are (there are a number of other constants
- X defining character attribute names and function key names - consult the
- X <curses.h> and <curspriv.h> include files for details):
- X
- X (manifest constants)
- X
- X TRUE boolean true
- X FALSE boolean false
- X ERR unsuccessfull operation
- X OK successfull operation
- X
- X (types)
- X
- X WINDOW a window structure type
- X bool boolean flag type
- X
- X (variables)
- X
- X WINDOW curscr physical display image
- X WINDOW stdscr default user drawing board
- X int LINES terminal height
- X int COLS terminal width
- X
- X The following is an alphabetical list of the curses functions, together
- X with their types, parameters and a short comment for each. Win is a win-
- X dow; ch, l, r, t, b, tl, tr, bl and br are characters; buf is a character
- X buffer; attrs is an attribute bit map; bf is a boolean flag. Note that
- X `character' return values in this context usually are 16 bits. Guaranteed
- X portable functions are marked with an asterisk (*):
- X
- X
- X* int addch(ch) put char in stdscr
- X int addrawch(ch) put raw char in stdscr
- X* int addstr(str) put string in stdscr
- X void attroff(attrs) clear attribute(s) in stdscr
- X void attron(attrs) add attribute(s) in stdscr
- X void attrset(attrs) set stdscr char attributes
- X int baudrate() dummy for compatibility
- X void beep() ring the bell
- X void border(l,r,t,b,tl,tr,bl,br) Set non-std box characters
- X* void box(win,l,t) box in a window, with given characters
- X* void cbreak() set terminal cbreak mode
- X* void clear() clear stdscr
- X* void clearok(win,bf) marks window for screen clear
- X* int clrtobot() clear end of stdscr
- X* int clrtoeol() clear end of line in stdscr
- X* void crmode() set terminal cbreak mode
- X void cursoff() turns off hardware cursor
- X void curson() turns on hardware cursor
- X void def_prog_mode() save TTY modes
- X void def_shell_mode() compatibility dummy
- X* int delch() delete a char in stdscr
- X* int deleteln() delete a line in stdscr
- X* void delwin(win) delete a window or a subwindow
- X void doupdate() update physical screen
- X* void echo() set terminal echo mode
- X* int endwin() cleanup and curses finitialization
- X* void erase() erase stdscr
- X int erasechar() return char delete character
- X int fixterm() dummy for compatibility
- X void flash() flash terminal screen
- X void flushinp() kill pending keyboard input
- X* int getch() (#def macro) get character via stdscr
- X* int getstr(buf) get string via stdscr to a buffer
- X* void getyx(win,y,x) get a window's cursor position
- X* int gettmode() dummy for compatibility
- X void idlok(win,bf) dummy for compatibility
- X* int initscr() curses initialization (ret 1 if OK)
- X* int inch() get char at stdscr cursor
- X* int insch(ch) insert character in stdscr
- X int insrawch(ch) insert raw character in stdscr
- X* int insertln() insert an empty line in stdscr
- X void keypad(win,bf) marks a window for keypad usage
- X int killchar() return line delete character
- X* void leaveok(win,bf) marks window for cursor 'update leave'
- X* char *longname() returns terminal description string
- X void meta(win,bf) marks window for meta (dummy function)
- X* int move(y,x) move cursor in stdscr
- X* int mvaddch(y,x,ch) move & put char in stdscr
- X int mvaddrawch(y,x,ch) move & put raw char in stdscr
- X* int mvaddstr(y,x,str) move & put string in stdscr
- X int mvclrtobot(y,x) move & clear end of stdscr
- X int mvclrtoeol(y,x) move & clear lineend in stdscr
- X* int mvcur(oldy,oldx,y,x) move terminal cursor to <y,x>
- X* int mvdelch(y,x) move & delete a char in stdscr
- X int mvdeleteln(y,x) move & delete a line in stdscr
- X* int mvgetch(y,x) move & get char to stdscr
- X* int mvgetstr(y,x,buf) move & get string via stdscr to buffer
- X* int mvinch(y,x,) move & get char at stdscr cursor
- X* int mvinsch(y,x,ch) move & insert char in stdscr
- X int mvinsrawch(y,x,ch) move & insert raw char in stdscr
- X int mvinsertln(y,x) move & insert new line in stdscr
- X* int mvprintw(y,x,fmt,args) move & print string in stdscr
- X* int mvscanw(y,x,fmt,args) move & get values via stdscr
- X* int mvwaddch(win,y,x,ch) move & put char in a window
- X int mvwaddrawch(win,y,x,ch) move & put raw char in a window
- X* int mvwaddstr(win,y,x,str) move & put string in a window
- X int mvwclrtobot(win,y,x) move & clear end of a window
- X int mvwclrtoeol(win,y,x) move & clear lineend in a window
- X* int mvwdelch(win,y,x) move & delete a char in a window
- X int mvwdeleteln(win,y,x) move & delete a line in a window
- X* int mvwgetch(win,y,x) move & get char to a window
- X* int mvwgetstr(win,y,x,str) move & get string to a window
- X* int mvwinch(win,y,x) move & get char at window cursor
- X* int mvwinsch(win,y,x,ch) move & insert char in a window
- X int mvwinsrawch(win,y,x,ch) move & insert raw char in a window
- X int mvwinsertln(win,y,x) move & insert new line in window
- X int mvwin(win,y,x) move window on physical screen
- X* int mvwprintw(win,x,y,fmt,args) move & print string in a window
- X* int mvwscanw(win,y,x,fmt,args) move & get values via a window
- X* WINDOW *newwin(lines,cols,begy,begx) create a new window
- X* void nl() set terminal cr-crlf mapping mode
- X* void nocbreak() unset terminal cbreak mod
- X* void nocrmode() unset terminal cbreak mode
- X void nodelay(win,bf) marks window for no input wait
- X* void noecho() unset terminal echo mode
- X* void nonl() unset terminal cr-crlf mapping mode
- X* void noraw() unset raw terminal mode
- X* void overlay(win1,win2) overlay one window on another
- X* void overwrite(win1,win2) overwrite one window on another
- X* int printw(fmt,args) print string in stdscr
- X* void raw() set raw terminal mode
- X void refrbrk(bf) set screen update break mode
- X* void refresh() refresh stdscr
- X int resetterm() dummy for compatibility
- X* int resetty() restore terminal I/O modes
- X void reset_prog_mode() restore terminal I/O modes
- X void reset_shell_mode() set terminal to default modes
- X int saveoldterm() dummy for compatibility
- X int saveterm() dummy for compatibility
- X* int savetty() save terminal I/O modes
- X* int scanw(fmt,args) get values via stdscr
- X* void scroll(win) scroll scrolling region of a window
- X* void scrollok(win,bf) marks a window to allow scroll
- X int setscrreg(miny,maxy) define stdscr's scroll region
- X* int setterm() dummy for compatibility
- X int setupterm(term,fd,errret) set up terminal (no-op on PC)
- X* void standend() start normal chars in stdscr
- X* void standout() start standout chars in stdscr
- X* WINDOW *subwin(win,lines,cols,begy,begx) create a sub-window in window win
- X int tabsize(ts) set/get tabsize of stdscr
- X* void touchwin(win) mark a window as totally modified
- X* char *unctrl(ch) char-to-string converter
- X int ungetch(ch) (#def macro) push back a character to input */
- X* int waddch(win,ch) put char in a window
- X int waddrawch(win,ch) put raw char in a window
- X* int waddstr(win,str) put string in a window
- X void wattroff(win,attrs) clear attribute(s) in window
- X void wattron(win,attrs) add attribute(s) in window
- X void wattrset(win,attrs) set window char attributes
- X void wborder(win,l,r,t,b,tl,tr,bl,br) Set non-std box characters
- X int wbox(win,miny,minx,maxy,maxx,l,r) draw a box inside a window
- X* void wclear(win) clear a window
- X* int wclrtobot(win) clear end of a window
- X* int wclrtoeol(win) clear end of line in a window
- X* int wdelch(win) delete a char in a window
- X* int wdeleteln(win) delete a line in a window
- X* void werase(win) erase a window
- X* int wgetch(win) get char via a window
- X* int wgetstr(win,buf) get string via window to a buffer
- X* int winch(win) get char at window cursor
- X* int winsch(win,ch) insert character in a window
- X int winsrawch(win,ch) insert raw character in a window
- X* int winsertln(win) insert new line in a window
- X* int wmove(win,y,x) move cursor in a window
- X void wnoutrefresh(win) create internal screen image
- X* int wprintw(win,fmt,args) print string in a window
- X* void wrefresh(win) refresh window
- X* int wscanw(win,fmt,args) get values via a window
- X int wsetscrreg(win,miny,maxy) define a window's scrolling region
- X* void wstandend(win) start normal chars in window
- X* void wstandout(win) start standout chars in window
- X int wtabsize(win,ts) set/get tabsize of a window
- X int wungetch(ch) push back a character to input */
- X
- XMISSING FUNCTIONS
- X
- X The following functions existing in UNIX cursees are missing in PCcurses:
- X
- X getcap(nam) get terminal capability 'name'
- X
- XFUNCTIONS UNIQUE TO PCcurses
- X
- X The following functions are (to the author's knowledge) unique to PCcurses:
- X
- X int addrawch(ch) put raw char in stdscr
- X int waddrawch(win,ch) put raw char in a window
- X int mvaddrawch(y,x,ch) move & put raw char in stdscr
- X int mvwaddrawch(win,y,x,ch) move & put raw char in a window
- X int insrawch(ch) insert raw character in stdscr
- X int winsrawch(win,ch) insert raw character in a window
- X int mvinsrawch(y,x,ch) move & insert raw char in stdscr
- X int mvwinsrawch(win,y,x,ch) move & insert raw char in a window
- X int tabsize(ts) set/get tabsize of stdscr
- X int wtabsize(win,ts) set/get tabsize of a window
- X
- XSEE ALSO
- X "Screen Updating And Cursor Movement Optimization: A Library Package" -
- X Kenneth C.R.C. Arnold
- X "The Ncurses Reference Manual" - Pavel Curtis, Cornell University
- X
- XBUGS
- X The terminal raw I/O mode is implemented by reading characters directly
- X from the BIOS. This means that the programmer must not use the normal
- X I/O routines to the screen or from the keyboard, since they will trap the
- X MS-DOS ^C, ^S, ^Q and ^P characters and thus nullify the raw input.
- X
- X Also, if the terminal is in normal or cbreak mode and the programmer has
- X trapped CTRL-BREAK by using signal(SIGINT,ownhandler), MS-DOS will still
- X echo the characters '^C' on the screen when the character is intercepted.
- X There seems to be no way to avoid this under MS-DOS (use raw mode in-
- X stead, or redraw the whole screen).
- X
- X The function key support is hardware dependent. There is a table in char-
- X get.c that maps keyboard scan codes from the keyboard to function key
- X names. The one supplied works for IBM PC/XT/AT, and for most clones.
- X
- XREVISION
- X The current revision is v.1.4 (900114). If you find or correct bugs, or if
- X you think up or implement enhancements, please contact the author. That way
- X he can maintain an 'official' version of PCcurses, without too many local
- X versions floating around.
- X
- XAUTHOR
- X Home: Bjorn Larsson Work: INFOVOX AB
- X Ynglingagatan 5,IV Box 2503
- X S-113 47 Stockholm S-171 02 Solna
- X SWEDEN SWEDEN
- X
- X UseNet: bl@infovox.se
- END_OF_curses.3
- if test 14592 -ne `wc -c <curses.3`; then
- echo \"curses.3\" unpacked with wrong size!
- fi
- # end of overwriting check
- fi
- if test -f readme.now -a "${1}" != "-c" ; then
- echo Will not over-write existing file \"readme.now\"
- else
- echo Extracting - \"readme.now\"
- sed "s/^X//" >readme.now <<'END_OF_readme.now'
- X PCCURSES v.1.4 Release Notes - 900114
- X ===================================================
- X
- X This is the release note for the fifth version of PCcurses, v.1.4.
- XBelow this note, the release notes for v.1.0 - v.1.3 are included. Read
- Xthose first.
- X
- X In PCcurses v.1.4, both portability improvements and bugfixes have
- Xbeen made. The files have been changed to allow lint-free compilation
- Xwith MicroSoft 'C' v.5.1, and with Turbo 'C' v.2.0. The source should
- Xstill compile without problems on older compilers, although this has
- Xnot been verified.
- X
- X The makefiles have been changed to suit both the public release and
- Xthe author, who maintains a special kind of libraries for himself. In
- Xthe case of MicroSoft 'C', changes were done in the makefile to lower
- Xthe warning level to 2 (was 3). This was to avoid ANSI warnings which
- Xare abundant because PCcurses does not attempt to follow strict ANSI
- X'C' standard.
- X
- X BUG FIXES FROM V.1.3 TO V.1.4:
- X
- X !!!IMPORTANT CHANGE!!!
- X
- X The definitions for OK and ERR in curses.h were exchanged. This was
- Xdone to be more consistent with UNIX versions. Also, it permits func-
- Xtions like newwin() and subwin() to return 0 (=NULL) when they fail
- Xdue to memory shortage. This incompatibility with UNIX curses was
- Xpointed out by Fred C. Smith. If you have tested success/failure by
- Xcomparisons to anything other than ERR and OK, your applications will
- Xneed to be be changed on that point. Sorry... but presumably most of
- Xyou used the symbolic constants?
- X
- X (END OF IMPORTANT CHANGE)
- X
- X Fred also pointed out a bug in the file update.c. The bug caused the
- Xfirst character printed after 'unauthorized' screen changes (like du-
- Xring a shell escape, for example) to be placed at the wrong screen posi-
- Xtion. This happened even if the normal precautions (clear / touch / re-
- Xfresh) were taken. The problem has now been fixed.
- X
- X PCcurses is currently also being used on a 68000 system with hard-
- Xcoded ESCape sequences for ANSI terminals. However, int's used by the
- X68000 C compiler are 32 bits. Therefore int's have been turned into
- Xshort's wherever possible in the code (otherwise all window structures
- Xoccupy twice as much space as required on the 68000). This does not
- Xaffect PC versions since normally both int's and short's are 16 bits
- Xfor PC C compilers.
- X
- X At some places in the source code there are references made to the
- X68000 version. There are also a makefile, a curses68.c file, and a
- Xcurses68.cmd file. These are for making, low-level I/O, and linking
- Xcommands when building the 68000 version. These files are probably
- Xuseful to no-one but the author, since it is very specific for it's
- Xspecial hardware environment. Still in an effort to keep all curses-
- Xrelated sources in one place they are included. Note however that
- XPCcurses will not officially support a non-PC environment.
- X
- X The file cursesio.c, which was included in the package at revision
- Xlevel 1.2, and which was to be an alternative to the cursesio.asm
- Xfile, has been verified to behave incorrectly in the function
- X_curseskeytst(). The problem was that the value of 'cflag' does not
- Xcontain the proper data for the test that is attempted. Furthermore,
- Xneither Turbo'C' or MicroSoft'C' allows any way to return the data
- Xthat is needed, and consequently you should not use cursesio.c. The
- Xbest solution is to simply use the ASM version. In v.1.2 and v.1.3,
- Xthe user could edit the makefile to select which version he wanted to
- Xuse. The makefiles in v.1.4 have removed this possiblity forcing the
- Xuse of the ASM file, and cursesio.c has been dropped from the distri-
- Xbution.
- X
- X A bug in the wgetstr() function caused PCcurses to echo characters
- Xwhen reading a keyboard string, even if the echo had been turned off.
- XThanks to Per Foreby at Lund University, Sweden, for this. Per also
- Xreported bugs concerning the handling of characters with bit 8 set.
- XTheir ASCII code were considered as lower than 32, so they were
- Xerased etc. like control characters, i.e. erasing two character posi-
- Xtions. The control character test was changed to cope with this.
- X
- X The overlay() and overwrite() functions were changed so that the
- Xoverlaying window is positioned at it's 'own' coordinates inside the
- Xunderlying window (it used to be at the underlying window's [0,0]
- Xposition). There is some controversy about this - the documentation
- Xfor different curses versions say different things. I think the
- Xchoice made is the most reasonable.
- X
- X The border() and wborder() functions were changed to actually draw
- Xa border, since this seems to be the correct behaviour of these func-
- Xtions. They used to just set the border characters to be used by
- Xbox(). These functions are not present in standard BSD UNIX curses.
- X
- X The subwin() function previously did not allow the subwindow to be
- Xas big as the original window in which it was created. This has now
- Xbeen fixed. There was also the problem that the default size (set by
- Xspecifying numlines or numcols (or both) as 0 made the resulting
- Xactual size 1 line/column too small.
- X
- X There were a few spelling errors in function names, both in the
- Xfunction declarations and in curses.h. This was reported by Carlos
- XAmaral at INESC in Portugal. Thanks! There was also an unnecessary
- X(but harmless) parameter in a function call at one place.
- X
- X
- X
- X PCCURSES v.1.3 Release Notes - 881005
- X ===================================================
- X
- X This is the release note for the fourth version of PCcurses, v.1.3.
- XBelow this note, the release notes for v.1.0, v.1.1 and v.1.2 are in-
- Xcluded. Read those first.
- X
- X The file 'border.c' is now included. It allows you to explicitely speci-
- Xfy what characters should be used as box borders when the box() functions
- Xare called. If the new border characters are non-0, they override the bor-
- Xder characters specified in the box() call. In my understanding, this func-
- Xtionality is required for AT&T UNIX sV.3 compatibility. Thanks for this
- Xgoes to Tony L. Hansen (hansen@pegasus.UUCP) for posting an article about
- Xit on UseNet (newsgroup comp.unix.questions; his posting was not related
- Xat all to PCcurses).
- X
- X The only other difference between v.1.2 and v.1.3 is that the latter has
- Xbeen changed to avoid warning diagnostics if the source files are compiled
- Xwith warning switches on (for MicroSoft this means '-W3', for Turbo'C' it
- Xmeans '-w -w-pro'). Of these, the Turbo'C' warning check is clearly to be
- Xused rather than MicroSoft, even if neither of them comes even close to a
- Xreal UNIX 'lint'. Some of the warnings in fact indicated real bugs, mostly
- Xfunctions that did not return correct return values or types.
- X
- X The makefiles for both MSC and TRC have been modified to produce warning
- Xmessages as part of normal compilation.
- X
- X
- X
- X
- X PCCURSES v.1.2 Release Notes - 881002
- X ===================================================
- X
- X This is the release note for the third version of PCcurses, v.1.2.
- XBelow this note, the release notes for v.1.0 and v.1.1 are included. Read
- Xthose first.
- X
- X The changes from v.1.1 to v.1.2 are minor. The biggest change is that there
- Xwas a bug related to limiting the cursor movement if the application tried to
- Xmove it outside the screen (something that should not be done anyway). Such
- Xerronous application behaviour is now handled appropriately.
- X
- X All modules have been changed to have a revison string in them, which makes
- Xit easier to determine what version is linked into a program (or what library
- Xversion you have).
- X
- X There is now a 'cursesio.c' file. That file does the same as 'cursesio.asm'
- X(i.e. it provides the interface to the lower-level system I/O routines). It
- Xis written in 'C' and thus it is (possibly) more portable than the assembler
- Xversion (but still not so portable since it uses 8086 INT XX calls directly).
- XWhen one creates new curses libraries, one chooses whether to use the assem-
- Xbler or the 'C' version of cursesio. The choice is made by commenting out the
- Xappropriate dependencies for cursesio.obj, near the end of the makefiles.
- X
- X There is now a 'setmode.c' file. That file contains functions that save and
- Xrestore terminal modes. They do it into other variables than do savetty() and
- Xresetty(), so one should probably use either savetty()/resetty() or the new
- Xfunctions only - and not mix the both ways unless one really knows what one
- Xdoes.
- X
- X Diff lists vs v.1.0 are no longer included in the distribution. The make
- Xutility still is. PCcurses v.1.2 still compiles with MicroSoft 'C' v.4.0,
- Xand with Borland Turbo 'C' v.1.0. There is as far as I know no reason to be-
- Xlieve that it does not compile under MicroSoft 'C' v.3.0 and 5.x, or Turbo-
- X'C' v.1.5, but this has not been tested.
- X
- X There are two makefile's included, one for MicroSoft 'C', one for Turbo-'C'.
- XThey are both copies of my personal makefile's, and as such they reflect the
- Xdirectory structure on my own computer. This will have to be changed before
- Xyou run make. Check $(INCDIR) and $(LIBDIR) in particular, and make the choice
- Xof ASM or 'C' cursesio version as mentioned above (the distribution version
- Xuses the 'C version of cursesio).
- X
- X The manual file (curses.man) has been changed at appropriate places.
- X
- X I would like to thank the following persons for their help:
- X
- X Brandon S. Allbery (alberry@ncoast.UUCP)
- X for running comp.binaries.ibm.pc (at that time)
- X and comp.source.misc.
- X
- X Steve Balogh (Steve@cit5.cit.oz.AU)
- X for writing a set of manual pages and posting
- X them to the net.
- X
- X Torbjorn Lindh
- X for finding bugs and suggesting raw
- X character output routines.
- X
- X Nathan Glasser (nathan@eddie.mit.edu)
- X for finding and reporting bugs.
- X
- X Ingvar Olafsson (...enea!hafro!ingvar)
- X for finding and reporting bugs.
- X
- X Eric Rosco (...enea!ipmoea!ericr)
- X for finding and reporting bugs.
- X
- X Steve Creps (creps@silver.bacs.indiana.edu)
- X for doing a lot of work - among others
- X posting bug fixes to the net, and writing
- X the new cursesio.c module.
- X
- X N. Dean Pentcheff (dean@violet.berkeley.edu)
- X for finding bugs and rewriting cursesio.asm
- X for Turbo 'C' 1.5.
- X
- X Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
- X (jeff@ads.arpa)
- X has had a shareware version of curses deliverable since
- X about half a year before I released PCcurses 1.0 on Use-
- X Net. He is very concerned about confusion between the two
- X packages, and therefore any references on the network
- X should make clear whether they reference Dean's PCcurses
- X or Larsson's PCcurses.
- X
- X
- X
- X PCCURSES v.1.1 Release Notes - 880306
- X ===================================================
- X
- X This is the release note for the second version of PCcurses, v.1.1.
- XBelow this note, the release note for v.1.0 is included. Read that first.
- XThe changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, and
- Xnew (non-portable) functions for verbatim IBM character font display have
- Xbeen added (in charadd.c and charins.c). The manual file (curses.man) has
- Xbeen changed at appropriate places.
- X
- X In the file v10tov11.dif there are listings of the differencies between
- Xversion 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
- X
- X Version 1.1 compiles with Turbo 'C' v.1.0, as well as MicroSoft 'C' v.3.0
- Xand v.4.0. On the release disk there is a make.exe utility which is very simi-
- Xlar to UNIX make (If the package was mailed to you, the make utility will be
- Xin uuencoded format - in make.uu - and must be uudecoded first). It is much
- Xmore powerful than MicroSoft's different MAKE'S; the latter ones will NOT ge-
- Xnerate libraries properly if used with the PCcurses makefiles.
- X
- X There are three makefiles:
- X
- X makefile generic MSC 3.0 makefile
- X makefile.ms MSC 4.0 makefile
- X makefile.tc Turbo 'C' 1.0 makefile
- X
- X To make a library with for example Turbo 'C', make directories to hold .H
- Xand .LIB files (these directories are the 'standard places'), edit makefile.tc
- Xfor this, and type
- X
- X make -f makefile.tc all
- X
- Xand libraries for all memory models will be created in the .LIB directory,
- Xwhile the include files will end up in the .H directory. Also read what is
- Xsaid about installation below!
- X
- X
- X
- X
- X PCCURSES v.1.0 Release Notes - 870824
- X ===================================================
- X
- X
- X
- X This is the release notes for the PCcurses v.1.0 cursor/window control
- Xpackage. PCcurses offers the functionality of UNIX curses, plus some
- Xextras. Normally it should be possible to port curses-based programs from
- XUNIX curses to PCcurses on the IBM PC without changes. PCcurses is a port/
- Xrewrite of Pavel Curtis' public domain 'ncurses' package. All the code has
- Xbeen re-written - it is not just an edit of ncurses (or UNIX curses). I
- Xmention this to clarify any copyright violation claims. The data struc-
- Xtures and ideas are very similar to ncurses. As for UNIX curses, I have
- Xnot even seen any sources for it.
- X
- X For an introduction to the use of 'curses' and it's derivatives, you
- Xshould read 'Screen Updating and Cursor Movement Optimization: A Library
- XPackage' by Kenneth C. R. C. Arnold, which describes the original Berkely
- XUNIX version of curses. It is available as part of the UNIX manuals. The
- Xother source of information is 'The Ncurses Reference Manual' by Pavel
- XCurtis. The latter is part of Curtis' ncurses package.
- X
- X The only other documentation provided is a 'man' page which describes
- Xall the included functions in a very terse way. In the sources, each
- Xfunction is preceded by a rather thourough description of what the
- Xfunction does. I didn't have time to write a nice manual/tutorial - sorry.
- X
- X PCcurses is released as a number of source files, a man page, and a make
- Xfile. A uuencoded copy of a 'make' utility, and a manpage for the 'make' is
- Xalso provided to make it easier to put together PCcurses libraries. Even if
- Xyou are not interested in PCcurses, it may be worthwhile to grab the make.
- X
- X The makefile assumes the presence of the MicroSoft 'C' compiler (3.0 or
- X4.0), MicroSoft MASM and LIB, plus some MS-DOS utilities. The reason for
- Xsupplying MAKE.EXE is that the MicroSoft 'MAKE:s' are much inferior to a
- Xreal UNIX make. The supplied make is a port of a public domain make, pub-
- Xlished on UseNet. It is almost completely compatible with UNIX make. When
- Xgenerating the curses libraries, the makefile will direct make to do some
- Xdirectory creating and file copying, and then re-invoke itself with new
- Xtargets. The workings of the makefile are not absolutely crystal clear at
- Xfirst sight... just start it and see what it does.
- X
- X For portability, the curses libraries depend on one assembler file for
- Xaccess to the BIOS routines. There is no support for the EGA, but both
- XCGA, MGA, and the HGA can be used. The libraries are originally for Micro-
- XSoft 'C', but all C modules should be portable right away. In the assembler
- Xfile, segment names probably need to be changed, and possibly the parameter
- Xpassing scheme. I think Turbo C will work right away - as far as I under-
- Xstand, all it's conventions are compatible with MicroSoft C.
- X
- X There are some parts left out between ncurses and PCcurses. One is the
- Xsupport for multiple terminals - not very interesting on a PC anyway. Be-
- Xcause we KNOW what terminal we have, there is no need for a termcap or
- Xtermio library. PCcurses also has some things that neither curses nor
- Xncurses have. Compared to the original UNIX curses, PCcurses has lots
- Xof extras.
- X
- X The BIOS routines are used directly, which gives fast screen updates.
- XPCcurses does not do direct writes to screen RAM - in my opinion it is
- Xa bit ugly to rely that much on hardware compatibility. Anyone could fix
- Xthat, of course...
- X
- X One of the more serious problems with PCcurses is the way in which nor-
- Xmal, cbreak, and raw input modes are done. All those details are in the
- X'charget' module - I do raw I/O via the BIOS, and perform any buffering
- Xmyself. If an application program uses PCcurses, it should do ALL it's
- XI/O via PCcurses calls, otherwise the mix of normal and PCcurses I/O may
- Xmess up the display. I think my code is reasonable... comments are welcome,
- Xprovided you express them nicely...
- X
- X To install, copy all files to a work directory, edit 'makefile' to define
- Xthe standard include and library file directory names of your choice (these
- Xdirectories must exist already, and their path names must be relative to the
- Xroot directory, not to the current one). You must also run uudecode on
- Xmake.uu, to generate MAKE.EXE. You can do that on your PC, if you have
- Xuudecode there, otherwise you can do it under UNIX and do a binary transfer
- Xto the PC. When you have MAKE.EXE in your work directory (or in your /bin
- Xdirectory), type make.
- X
- X Make will now create 4 sub-directories (one for each memory model), copy
- Xsome assembler include files into them, copy two include files to your
- Xinclude directory, CHDIR to each sub-directory and re-invoke itself with
- Xother make targets to compile and assemble all the source files into the
- Xappropriate directories. Then the library manager is run to create the
- Xlibrary files in your desired library directory. Presto!
- X
- X If you only want to generate a library for one memory model, type 'make
- Xsmall', 'make large', etc. The name of the memory model must be in lower
- Xcase, like in the makefile.
- X
- X I think the package is fairly well debugged - but then again, that's
- Xwhat I always think. It was completed in May-87, and no problems found
- Xyet. Now it's your turn... Comments, suggestions and bug reports and
- Xfixes (no flames please) to
- X
- XBjorn Larsson
- XINFOVOX AB
- XBox 2503 (bl@infovox.se)
- XS-171 02 Solna
- XSWEDEN
- END_OF_readme.now
- if test 17453 -ne `wc -c <readme.now`; then
- echo \"readme.now\" unpacked with wrong size!
- fi
- # end of overwriting check
- fi
- echo End of archive 6 \(of 7\).
- cp /dev/null archdone.6
- MISSING=""
- for I in 1 2 3 4 5 6 7 ; do
- if test ! -f archdone.${I} ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 7 archives.
- rm -f archdone.[1-9]
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-